【日志】logging

简介

日志的存在是为了监控代码执行的效率和结果,当代码出现问题,则可以很方便的捕捉异常并输出

故日志在做标记的时候需要考虑的就是,在什么样的条件下返回什么样的检查结果,并且输出的格式是什么样的便于标准化处理~~

python的logging包实质上就提供了一个标准化输出的日志结构

其创建需要包括以下几个接口

  • Logger记录器:创建一个实例,创建一个接口来生成日志
  • Formatter格式化器:将生成的日志处理偶成指定的格式
  • Filter过滤器:指定特定的日志进行过滤存储
  • Handler处理器:将生成日志按照指定的存储格式输出到相应的位置

一般情况下,log的日志级别有以下几类:

  • notset -- 0 最基础的信息输出
  • debug -- 10 详细信息,显示全部执行情况
  • info -- 20 简化信息,显示节点执行情况
  • warning -- 30 出现问题,但是代码可以继续执行
  • warn -- 30 出现问题,但是代码可以继续执行
  • error -- 40 出现错误,代码一些功能不能实现
  • critical -- 50 严重错误,代码完全不能继续运行

工作流程

  1. 导入logging模块,创建logger记录器
  2. 创建handler处理器,确定输出的日志存储类型和输出位置
  3. 确定日志的输出最高级别
  4. 确定输出日志的文本形式
  5. 将处理器配置成相应的文本形式
  6. 将处理器添加到logger记录器中

功能

输出格式 -- 用于Handler处理器

函数 说明
StreamHandler() 日志以流格式存储
FileHandler() 日志以文件格式存储
NullHandler() 日志不输出

format格式 -- 用于Formatter

格式 说明
%(levelno)s 日志级别数值
%(levelname)s 日志级别名称
%(pathname)s 执行代码的路径
%(filename)s 执行程序的名称
%(funcName)s 当前函数的名称
%(lineno)d 当前输出日志行号
%(asctime)s 打印日志时间
%(thread)s 执行的线程id
%(threadName)s 执行的线程名称
%(process)d 执行的进程id
%(message)s 打印的日志信息

说明

import logging

logger = logging.getLogger('test')     # 创建logger记录器
logger.setLevel(logging.DEBUG)         # 设置日志级别


fh = logging.FileHandler('./log.log')  # 设置输出格式和路径
fh.setLevel(logging.WARN)              # 设置输出日志级别
log_format = '[%(levelname)s] %(asctime)s %(filename)s thread:%(threadName)s process:%(process)  %(message)s'  # 配置输出日志格式
date_format = '%a %d %b %Y %H:%M:%S'   # 设置日志格式 

formatt = logging.Formatter(log_format, date_format)   # 确定输出日志格式

fh.setFormatter(formatt)               # 按照给定格式输出handler处理器
logger.addHandler(fh)                  # 记录器增加处理器

logging.basicConfig(level=logging.INFO, format=log_format)    # 直接打印到控制台

# 设置不同级别的日志的输出信息message
logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

链接:https://www.jianshu.com/p/feb86c06c4f4

results matching ""

    No results matching ""